package br.urca.util;

import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ValidacaoDados {
	
	public static boolean caracterCPFValido(String cpf) {
		boolean retorno = false;
		cpf = removerMascara(cpf);
		for(int i = 0; i < cpf.length(); i++) {
			if (isCharacterCPFValid(cpf.substring(i, i+1))) {
				retorno = true;
			} else {
				retorno = false;
				break;
			}
		}
		return retorno;
	}
	
	public static boolean senhaValida(String senha) {
		boolean retorno = false;
		for(int i = 0; i < senha.length(); i++) {
			if (isCharacterSenhaValid(senha.substring(i, i+1))) {
				retorno = true;
			} else {
				retorno = false;
				break;
			}
		}
		return retorno;
	}
	
	public static boolean loginValido(String parametro) {
		boolean retorno = false;
		
		String login = removerMascara(parametro);
		if (login.length() == 11) {
			retorno = true;
		} else {
			return false;
		}
		for(int i = 0; i < login.length(); i++) {
			if (isCharacterLoginValid(login.substring(i, i+1), i + 1  == login.length())) {
				retorno = true;
			} else {
				retorno = false;
				break;
			}
		}
		
		return retorno;
	}
	
	private static boolean isCharacterSenhaValid(String string) {
		List<String> caracteresValidos = Arrays.asList("1", "2", "3", "4", "5",
				"6", "7", "8", "9", "0", "A", "a", "B", "b", "C", "c", "D",
				"d", "E", "e", "F", "f", "G", "g", "H", "h", "I", "i", "J",
				"j", "K", "k", "L", "l", "M", "m", "N", "n", "O", "o", "P",
				"p", "Q", "q", "R", "r", "S", "s", "T", "t", "U", "u", "V",
				"v", "W", "w", "X", "x", "Y", "y", "Z", "z", "Ç", "ç");

		return caracteresValidos.contains(string);
	}
	
	private static boolean isCharacterCPFValid(String string) {
		try {
			Integer.parseInt(string);
			return true;
		} catch(Exception e) {
			return false;
		}
	}
	
	private static boolean isCharacterLoginValid(String string, boolean ultimoCaractere) {
		if (!ultimoCaractere) {
			try {
				Integer.parseInt(string);
				return true;
			} catch(Exception e) {
				return false;
			}
		} else {
			List<String> caracteresValidos = Arrays.asList("1", "2", "3", "4",
					"5", "6", "7", "8", "9", "0", "X");
			return caracteresValidos.contains(string);
		}
	}
	
	public static boolean validarEmail(String email) {
		boolean retorno = false;
		// Expressão Regular para validar E-mail
		Pattern p = Pattern
				.compile("^[\\w-]+(\\.[\\w-]+)*@([\\w-]+\\.)+[a-zA-Z]{2,7}$");
		Matcher m = p.matcher(email);
		if (!m.find())
			retorno = false;
		else
			retorno = true;
		return retorno;

	}	
	
	public static String removerMascara(String string) {
		if (string != null) {
			String retorno = string.replaceAll("-", "");
			retorno = retorno.replaceAll("\\.", "");
			return retorno;
		} else { 
			return "";
		}	
	}

}
